package busqueda;

import java.awt.Point;
import java.util.HashSet;

import api.Interface;

public class Movimientos {
	public static HashSet<Point> visitados = new HashSet<Point>();
	public static Point PosMov = new Point(0,0);
	public static String DirMov = "";
	
	public Movimientos() {
		visitados.add(Interface.getTablero().getRobot().getPosActual());
	}
	
	public static boolean norte() {
		int x = Interface.getTablero().getRobot().getPosActual().x;
		int y = Interface.getTablero().getRobot().getPosActual().y;
		
		if (x - 1 >= 0) {
			Point punto = new Point(x - 1, y);
		
			if (!visitados.contains(punto) && !Interface.getTablero().getObs().contains(punto)) {
				DirMov = "Norte";
				PosMov.setLocation(new Point(x-1, y));
				visitados.add(punto);
					
				return true;
			}
		}
		
		return false;
	}
	
	
	public static boolean sur() {
		int x = Interface.getTablero().getRobot().getPosActual().x;
		int y = Interface.getTablero().getRobot().getPosActual().y;
		
		if (x + 1 < Interface.getTablero().getM()) {
			Point punto = new Point(x + 1, y);
			
			if (!visitados.contains(punto) && !Interface.getTablero().getObs().contains(punto)) {
				DirMov = "Sur";
				PosMov.setLocation(new Point(x+1, y));
				visitados.add(punto);
				
				return true;
			}
		}		
		
		return false;
	}
	
	
	public static boolean oeste() {
		int x = Interface.getTablero().getRobot().getPosActual().x;
		int y = Interface.getTablero().getRobot().getPosActual().y;
		
		if (y - 1 >= 0) {
			Point punto = new Point(x, y - 1);
			
			if (!visitados.contains(punto) && !Interface.getTablero().getObs().contains(punto)) {
				DirMov = "Oeste";
				PosMov.setLocation(new Point(x, y-1));
				visitados.add(punto);
				
				return true;
			}
		}
		
		return false;
	}
	
	
	public static boolean este() {
		int x = Interface.getTablero().getRobot().getPosActual().x;
		int y = Interface.getTablero().getRobot().getPosActual().y;
		
		if (y + 1 < Interface.getTablero().getN()) {
			Point punto = new Point(x, y + 1);
			
			if (!visitados.contains(punto) && !Interface.getTablero().getObs().contains(punto)) {
				DirMov = "Este";
				PosMov.setLocation(new Point(x, y+1));
				visitados.add(punto);
				
				return true;
			}
		}
		
		return false;
	}
	
	public static String getDirMov() {
		return DirMov;
	}
	
	public static Point getPosMov() {
		return PosMov;
	}

}
